package com.hspedu.customgeneric;

import java.util.ArrayList;

/**
 * @author LiuJinTao
 * @className CustomMethodGeneric
 * @date 2024/06/19 12:28
 * @description 泛型方法的使用
 */
public class CustomMethodGeneric {
    public static void main(String[] args) {
        Car car = new Car();
        car.fly("宝马", 100);
        System.out.println("=============");
        Fish<String, ArrayList> stringIntegerFish = new Fish<>();
        stringIntegerFish.hello(new ArrayList(), 11.3f);
    }
}

//泛型方法，可以定义在普通类中，也可以定义在泛型类中
class Car {//普通类
    public void run() {//普通方法

    }

    // 1.<T, R> 就是泛型
    // 2.是提供给 fly 使用的
    public <T, R> void fly(T t, R r) {//泛型方法
        System.out.println(t.getClass());
        System.out.println(r.getClass());
        System.out.println("" + t + r);
    }
}

class Fish<T, R> {// 泛型类
    public void run() {//普通方法

    }

    public <U, M> void eat(U u, M m) {// 泛型方法

    }

    // hi() 不是泛型方法，是方法使用类的泛型
    public void hi(T t) {

    }

    // 泛型方法，可以使用类定义的泛型，也可以使用自己声明的泛型
    public <K> void hello(R r, K k) {
        System.out.println(r.getClass());
        System.out.println(k.getClass());
    }
}